<?xml version="1.0" encoding="utf-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" 
		xmlns:xlink="http://www.w3.org/1999/xlink" 
		xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
		targetNamespace="http://www.w3.org/1999/xlink" 
		elementFormDefault="qualified"
        attributeFormDefault="unqualified"
        >

	<!-- schema abstract -->
	<annotation>
		<documentation>
			This schema definition provides an XLink implementation for any schema.
		</documentation>
	</annotation>
	<!-- include and import declarations -->
	<include schemaLocation="standardCodes.xsd"/>
	<!-- element declarations -->
	<element name="simpleLink" type="xlink:simpleLinkType"/>
	<element name="extendedLink" type="xlink:extendedLinkType"/>
	<!-- attribute declarations -->
	<!-- attribute name="xmlns:xlink" type="string" fixed="http://www.w3.org/1999/xlink"/ -->
	<attribute name="type" type="xlink:basicLinkType"/>
	<attribute name="href" type="xlink:hrefType"/>
	<attribute name="role" type="xlink:roleType"/>
	<attribute name="arcrole" type="xlink:arcroleType"/>
	<attribute name="title" type="xlink:simpleTitleType"/>
	<attribute name="show" type="xlink:showType"/>
	<attribute name="actuate" type="xlink:actuateType"/>
	<attribute name="label" type="xlink:labelType"/>
	<attribute name="from" type="xlink:fromType"/>
	<attribute name="to" type="xlink:toType"/>
	<!-- attributeGroup definitions -->
	<attributeGroup name="simpleLinkGroup">
		<attribute ref="xlink:type" fixed="simple"/>
		<attribute ref="xlink:href"/>
		<attribute ref="xlink:role"/>
		<attribute ref="xlink:arcrole"/>
		<attribute ref="xlink:title"/>
		<attribute ref="xlink:show"/>
		<attribute ref="xlink:actuate"/>
	</attributeGroup>
	<attributeGroup name="extendedLinkGroup">
		<attribute ref="xlink:type" fixed="extended"/>
		<attribute ref="xlink:role"/>
		<attribute ref="xlink:title"/>
		<!-- attribute name="xmlns:xlink" type="string" fixed="http://www.w3.org/1999/xlink"/ -->
	</attributeGroup>
	<attributeGroup name="locatorGroup">
		<attribute ref="xlink:type" fixed="locator"/>
		<attribute ref="xlink:href" use="required"/>
		<attribute ref="xlink:role"/>
		<attribute ref="xlink:title"/>
		<attribute ref="xlink:label"/>
	</attributeGroup>
	<attributeGroup name="arcGroup">
		<attribute ref="xlink:type" fixed="arc"/>
		<attribute ref="xlink:arcrole"/>
		<attribute ref="xlink:title"/>
		<attribute ref="xlink:show"/>
		<attribute ref="xlink:actuate"/>
		<attribute ref="xlink:from"/>
		<attribute ref="xlink:to"/>
	</attributeGroup>
	<attributeGroup name="resourceGroup">
		<attribute ref="xlink:type" fixed="resource"/>
		<attribute ref="xlink:role"/>
		<attribute ref="xlink:title"/>
		<attribute ref="xlink:label"/>
	</attributeGroup>
	<attributeGroup name="titleGroup">
		<attribute ref="xlink:type" fixed="title"/>
		<attribute name="lang" type="xlink:isoLanguageCode"/>
	</attributeGroup>
	<!-- complexType definitions -->
	<complexType name="simpleLinkType" final="restriction" mixed="true">
		<annotation>
			<documentation>Offers a shorthand syntax for a common kind of link, an outbound link with exactly two participating resources.</documentation>
		</annotation>
		<attributeGroup ref="xlink:simpleLinkGroup"/>
	</complexType>
	<complexType name="extendedLinkType" final="restriction" mixed="true">
		<annotation>
			<documentation>Offers full XLink functionality, such as inbound and third-party arcs, as well as links that have arbitrary numbers of participating resources.  As a result, the structure of complex links can be fairly complex, including elements for pointing to remote resources, elements for containing local resources, elements for specifying arc traversal rules, and elements for specifying human-readable resource and arc titles.</documentation>
		</annotation>
		<choice minOccurs="0" maxOccurs="unbounded">
			<element name="title" type="xlink:titleType"/>
			<element name="resource" type="xlink:resourceType"/>
			<element name="locator" type="xlink:locatorType"/>
			<element name="arc" type="xlink:arcType"/>
		</choice>
		<attributeGroup ref="xlink:extendedLinkGroup"/>
	</complexType>
	<complexType name="locatorType">
		<annotation>
			<documentation>Address the remote resources participating in the link</documentation>
		</annotation>
		<sequence>
			<element name="title" type="xlink:titleType" minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
		<attributeGroup ref="xlink:locatorGroup"/>
	</complexType>
	<complexType name="arcType">
		<annotation>
			<documentation>Provide traversal rules among the link's participating resources.</documentation>
		</annotation>
		<sequence>
			<element name="title" type="xlink:titleType" minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
		<attributeGroup ref="xlink:arcGroup"/>
	</complexType>
	<complexType name="resourceType" mixed="true">
		<annotation>
			<documentation>Supply local resources that participate in the link.</documentation>
		</annotation>
		<attributeGroup ref="xlink:resourceGroup"/>
	</complexType>
	<complexType name="titleType" mixed="true">
		<annotation>
			<documentation>Provide human-readable labels for the link.</documentation>
		</annotation>
		<attributeGroup ref="xlink:titleGroup"/>
	</complexType>
	<!-- simpleType definitions -->
	<simpleType name="basicLinkType" final="#all">
		<annotation>
			<documentation>XLink conformant elements must contain a type attribute.  This is it's definition.</documentation>
		</annotation>
		<restriction base="token">
			<enumeration value="simple"/>
			<enumeration value="extended"/>
			<enumeration value="locator"/>
			<enumeration value="arc"/>
			<enumeration value="resource"/>
			<enumeration value="title"/>
			<enumeration value="none"/>
		</restriction>
	</simpleType>
	<simpleType name="hrefType">
		<annotation>
			<documentation/>
		</annotation>
		<restriction base="anyURI"/>
	</simpleType>
	<!-- ##### attribute name="role" type="anyURI" ##### tokenS? multi? ##### -->
	<simpleType name="roleType">
		<annotation>
			<documentation/>
		</annotation>
		<restriction base="token">
			<enumeration value="transform"/>
			<enumeration value="passThrough"/>

		</restriction>
	</simpleType>
	<!-- ##### attribute name="arcrole" type="anyURI" ##### -->
	<simpleType name="arcroleType">
		<annotation>
			<documentation>arcroleType definition.  Value MUST be a URI reference as defined in IETF RFC 2396, except if the URI shceme used is allowed to have absolute and relative forms, the URI portion MUST be absolute.  The URI reference identifys some resource that describes the intended property.  When no value is supplied, no particular role value is to be inferred</documentation>
		</annotation>
		<restriction base="string"/>
	</simpleType>
	<simpleType name="simpleTitleType">
		<annotation>
			<documentation>titleType definition.  Used to describe the meaning of a link or resource in a human-readable fashion, along the same lines as a ROLE or ARCROLE attribute (see roleType and arcroleType definitions).  A value is optional; if a value is supplied, it SHOULD contain a string that describes the resource or link.  The value MAY be used to make titles available to applications used by visually impaired users, or to create a table of links, or to present help text that appears when a user lets a mouse pointer hover over a starting resource.</documentation>
		</annotation>
		<restriction base="string"/>
	</simpleType>
	<simpleType name="showType">
		<annotation>
			<documentation>Defines possible values for show attribute.</documentation>
			<documentation>new:  Application SHOULD load the resource in a new window, frame, pane, or other relevant presentation context.</documentation>
			<documentation>replace:  Application SHOULD load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded.</documentation>
			<documentation>embed:  Application SHOULD load the resource presentation in place of the presentation of the starting resource.</documentation>
			<documentation>other:  Behavior of the application is unconstrained by the XLink spec.  The application SHOULD look for other markup present in the link to determine the appropriate behavior.</documentation>
			<documentation>none:  Behavior of the application is unconstrained by the XLink spec.  No other markup is present to help the application determine the appropriate behavior.</documentation>
		</annotation>
		<restriction base="token">
			<enumeration value="new"/>
			<enumeration value="replace"/>
			<enumeration value="embed"/>
			<enumeration value="other"/>
			<enumeration value="none"/>
		</restriction>
	</simpleType>
	<simpleType name="actuateType">
		<annotation>
			<documentation>Defines possible values for actuate attribute</documentation>
			<documentation>onLoad:  Application SHOULD traverse to the ending resource immediately on loading the starting resource.</documentation>
			<documentation>onRequest:  Application SHOULD traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal.  An example might be when a user clicks on the presentation of the starting resource, or a software module finishes a countdown that precedes a redirect.</documentation>
			<documentation>other:  The behavior of the application traversing to the ending resource is unconstrained by this specification.  The application SHOULD look for other markup present in the link to determine the appropriate behaviour.</documentation>
			<documentation>none:  The behavior of the application traversing to the ending resource is unconstrained by this specification.  No other markup is present to help the application determine the appropriate behavior.</documentation>
		</annotation>
		<restriction base="token">
			<enumeration value="onLoad"/>
			<enumeration value="onRequest"/>
			<enumeration value="other"/>
			<enumeration value="none"/>
		</restriction>
	</simpleType>
	<simpleType name="labelType">
		<annotation>
			<documentation>labelType definition.  If a 'from' or 'to' attribute value is supplied, it MUST correspond to the same value for some 'label' attribute on a 'locator-' or 'resource-' type element that appears as a direct child inside the same extended-type element as does the arc-type element.  See also 'from' and 'to' type definitions.</documentation>
		</annotation>
		<restriction base="token"/>
	</simpleType>
	<simpleType name="fromType">
		<annotation>
			<documentation>fromType definition.  If a value is supplied, it MUST correspond to the same value for some 'label' attribute on a 'locator-' or 'resource-' type element that appears as a direct child inside the same extended-type element as does the arc-type element.  See also 'label' and 'to' type definitions.</documentation>
		</annotation>
		<restriction base="token"/>
	</simpleType>
	<simpleType name="toType">
		<annotation>
			<documentation>toType definition.  If a value is supplied, it MUST correspond to the same value for some 'label' attribute on a 'locator-' or 'resource-' type element that appears as a direct child inside the same extended-type element as does the arc-type element.  See also 'label' and 'from' type definitions.</documentation>
		</annotation>
		<restriction base="token"/>
	</simpleType>
</schema>
